package modelo.armas;

import modelo.Movil;
import modelo.util.Vector;
import java.util.LinkedList;

/*
 * esta clase permite crear un arma compuesta por varias
 */

public class ArmaCompuesta extends Armas {

	private LinkedList<Armas> armas;
	
	public ArmaCompuesta (){
		armas = new LinkedList<Armas>();
	}
	
	public Armas getArma(){
		return armas.getFirst();
	}
	public void addArma (Armas unArma){
		armas.addFirst(unArma);
	}
	
	
	/*
	 * verifica si hay algun arma y si es necesario
	 * cambia al arma siguiente
	 */
	private void chequearArma(){
		// verifico que haya algun arma
		if (armas.size() < 1){
			return;
		}
		// si hay armas veo si la primera aun tiene carga
		Armas arma = armas.getFirst();
		if ( armas.size() > 1 & 
				! arma.puedeSeguirDisparando() ){
			armas.removeFirst();
		}
	}
	
	public boolean puedeSeguirDisparando (){
		this.chequearArma();
		if (armas.size()< 1){
			return false;
		}
		return (armas.getFirst().puedeSeguirDisparando());
	}
	
	public Movil disparar(Vector posicion, Vector direccion) {
		this.chequearArma();
		if (armas.size() < 1 ){
			throw new ArmaVaciaException();
		}
		Armas arma = armas.getFirst();
		return arma.disparar(posicion, direccion);
	}
	
	public String getTexto(){
		try {
			Armas arma = armas.getFirst();
			return arma.getTexto();
		}catch(Exception e){
			return "Arma vacia";
		}

	}
}
